package com.lt.thread;


import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;

/**
 * Copyright (C), 2006-2010, ChengDu ybyainfo. Co., Ltd.
 * FileName: ExecutorTest.java
 *
 * @version 1.00
 * @Author lt
 * @Date 2020/5/20 14:16
 **/
public class ExecutorTest {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
//        int taskSize = 5;
//        //创建一个线程池
//        ExecutorService pool = Executors.newFixedThreadPool(taskSize);
//        // 创建多个有返回值的任务
//        List<Future> list = new ArrayList<Future>();
//
//        for(int i = 0; i < taskSize; i++) {
//            Callable c = new MyCallable(i + " ");
//            // 执行任务并获取 Future 对象
//            Future f = pool.submit(c);
//            list.add(f);
//        }
//        // 关闭线程池
//        pool.shutdown();
//        // 获取所有并发任务的运行结果
//        for (Future f : list) {
//            // 从 Future 对象上获取任务的返回值，并输出到控制台
//            System.out.println("res：" + f.get().toString());
//        }

        // 创建线程池
//        ExecutorService threadPool = Executors.newFixedThreadPool(10);
//        while(true) {
//            threadPool.execute(new Runnable() { // 提交多个线程任务，并执行
//                public void run() {
//                    System.out.println(Thread.currentThread().getName() + " is running ..");
//                    try {
//                        Thread.sleep(3000);
//                    } catch (InterruptedException e) {
//                        e.printStackTrace();
//                    }
//                }
//            });
//        }

//        延迟执行
        ScheduledExecutorService scheduledThreadPool= Executors.newScheduledThreadPool(3);
        scheduledThreadPool.schedule(new Runnable(){
            public void run() {
                System.out.println("延迟三秒");
            }
        }, 3, TimeUnit.SECONDS);
//        scheduledThreadPool.scheduleAtFixedRate(new Runnable(){
//            public void run() {
//                System.out.println("延迟 1 秒后每三秒执行一次");
//            }
//        },1,3,TimeUnit.SECONDS);
    }
}
